package com.junxonline.instant.common.enumeration;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * API服务错误枚举类
 *
 * @author JunX
 * @date 2021-09-15
 */
@Getter
@AllArgsConstructor
public enum ApiErrorEnum {

    /**
     * 通用错误
     */
    SUCCESS("成功", 200),
    PARAMS_IS_NULL("参数格式不正确", 400),
    PARAMS_NOT_MATCH("参数格式不正确", 400),
    DATA_IS_NOT_EXISTS("数据不存在", 400),
    DATA_IS_EXISTS("数据已存在", 400),
    ASSERT_ERROR("断言异常", 400),
    AUTH_FAIL("身份认证失败", 401),
    ACCOUNT_IS_DISABLED("该账号已被禁用", 401),
    ACCOUNT_IS_DEL("该账号已被删除", 401),
    AUTH_TOKEN_IS_EXIST("该编号已有设备处于认证中", 401),
    PERMISSION_FAIL("无权限访问该资源", 402),
    NOT_FOUND("未找到该资源", 404),
    REQUEST_TYPE_NOT_SUPPORT("请求类型不支持", 405),
    INTERNAL_SERVER_ERROR("服务器错误", 500),
    SERVER_BUSY("服务器繁忙", 503);


    /**
     * 错误信息
     */
    private final String msg;

    /**
     * 错误码
     */
    private final Integer code;

    /**
     * 根据Value获取枚举类对象
     *
     * @param code code
     * @return OperationEnum
     */
    public static ApiErrorEnum getByCode(Integer code) {
        for (ApiErrorEnum adminErrorEnum : values()) {
            if (adminErrorEnum.getCode().equals(code)) {
                return adminErrorEnum;
            }
        }
        return null;
    }

    /**
     * 根据Value获取枚举类对象的Message
     *
     * @param code code
     * @return msg
     */
    public static String codesOf(Integer code) {
        for (ApiErrorEnum adminErrorEnum : values()) {
            if (adminErrorEnum.getCode().equals(code)) {
                return adminErrorEnum.getMsg();
            }
        }
        return null;
    }

}
